Computer code language services, such as source code completion, are often implemented as part of an integrated development environment (IDE). A web-based IDE may include a programmer operating a client system operatively coupled to a web service configured to provide language services. Typically, a thin client system interacts with a server-side language engine over a series of client-server communications wherein the server provides the language services to the client. These client-server communications, or server round trip exchanges, create a high level of latency for the client and the server that leads to a detrimental customer experience.
In addition, the client system in a conventional IDE including web-based language services employs a language-specific parsing engine to parse the inputted source code to identify information in the code set for presentation to the server-side engine. However, the client-side parsing is time consuming for large code inputs and requires a full client-side implementation of the language-specific parser. Furthermore, to provide language services for multiple different coding languages, the client system maintains a different parsing engine for each of the different languages.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.